用Visual Basic開發(fā)公園售票系統(tǒng)軟件
2003/11/24 12:43:00
【摘要】:本文介紹了一個(gè)使用Visual Basic成功開發(fā)出的公園售票系統(tǒng)軟件。頂層采用Visual Basic開發(fā)界面,使用ADO與SQL Server數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交互。底層采用PLC控制檢票機(jī)進(jìn)行檢票工作,并能在售票端隨時(shí)查詢和報(bào)表打印。 【關(guān)鍵詞】:Visual Basic PLC 串行通信 ADO 一、 前言 當(dāng)前的公園售票系統(tǒng)幾乎全部都是人工售票,不僅消耗人力、效率低下,而且不利于統(tǒng)計(jì)、管理。往往在節(jié)假日來臨時(shí),形成人們排隊(duì)等候買票的場(chǎng)面。使用計(jì)算機(jī)售票之后,大大提高了工作效率;同時(shí)也杜絕了因?yàn)閭卧扉T票而造成的損失,減少了財(cái)務(wù)漏洞。使用本軟件還能夠快速、精確統(tǒng)計(jì)售票信息和實(shí)時(shí)查詢票務(wù)及游客流量情況。 由于公園門票的種類比較多,即有大門票、海洋館、水下世界、鳥語林這類單種門票,也有這幾種門票的相互組合,形成種類繁多的票種,另外還有領(lǐng)導(dǎo)授權(quán)票,招待票,兒童票和學(xué)生半價(jià)票等特殊票種,如果進(jìn)行人工統(tǒng)計(jì),工作量非常大,通過使用本軟件后,可以隨時(shí)查詢并打印當(dāng)前任何票種的售票量和人數(shù),這樣可以根據(jù)實(shí)際情況隨時(shí)調(diào)整票價(jià),利于管理。 二、 系統(tǒng)簡(jiǎn)介 本軟件主要由三部分組成:數(shù)據(jù)庫部分、界面部分PLC控制部分。如圖(一)所示。軟件的最上層使用Visual Basic開發(fā),數(shù)據(jù)庫部分使用SQL Server數(shù)據(jù)庫,PLC采用松下PLC,其中,Visual Basic與SQL Server之間采用ADO連接,Visual Basic與PLC通過串行通訊控件Mscomm.ocx進(jìn)行通訊。 1. 數(shù)據(jù)庫部分 根據(jù)客戶的反饋,公園的日客流量一般在每日5,000人左右,在節(jié)假日時(shí)人數(shù)在30,000人左右,為了以防萬一,我們假設(shè)數(shù)據(jù)庫的最大容量為100,000,經(jīng)過分析比較各種數(shù)據(jù)庫設(shè)計(jì)軟件,決定數(shù)據(jù)庫部分采用微軟的SQL Server,既可以滿足數(shù)據(jù)的需求,速度也不慢,并且微軟可以提供給我們最好的支持。 2. 界面部分 界面部分使用Visual Basic進(jìn)行編程,Visual Basic是當(dāng)今最為流行的編程軟件之一,使用簡(jiǎn)單,是初學(xué)者的最佳選擇;而且使用Visual Basic開發(fā)軟件周期短,能在短時(shí)期內(nèi)制作出功能強(qiáng)大、使用方便的軟件。同時(shí),選擇Visual Basic和SQL Server是大多數(shù)程序員開發(fā)客戶/服務(wù)器軟件時(shí)的選擇。 3. PLC部分 這是一種目前非常主流的控制方法,由PLC作為控制單元,控制的對(duì)象為檢票機(jī)的各種動(dòng)作,如票的傳動(dòng)機(jī)構(gòu)、開關(guān)門、步進(jìn)電機(jī)打孔、判斷是否為兒童等??刂瞥绦虻木帉懖捎锰菪螆D的編寫軟件。 上位機(jī)和PLC的通訊程序采用Visual Basic編寫,由一臺(tái)計(jì)算機(jī)同時(shí)控制2—10臺(tái)檢票機(jī),通訊協(xié)議采用RS485,由于所選PLC只能支持被動(dòng)的通訊方式,所以在本系統(tǒng)中使用由計(jì)算機(jī)輪巡的操作方式。 三、 軟件實(shí)現(xiàn) Visual Basic是當(dāng)前最流行的開發(fā)軟件之一,它界面友好,使用簡(jiǎn)單,易于學(xué)習(xí),開發(fā)周期短,在不設(shè)計(jì)底層開發(fā)的情況下,完全可以開發(fā)出功能強(qiáng)大的軟件。同時(shí),Visual Basic提供了豐富的API函數(shù),可以彌補(bǔ)它的不足之處。根據(jù)客戶的需求,我們將售票系統(tǒng)分為四大部分:售普通票窗口,售特殊票窗口,出納端和管理端。其中,售普通票端只能出售像大門這些單種門票及各種門票的組合票;售特殊票端不僅可以售普通票,還可以售兒童票、學(xué)生票、領(lǐng)導(dǎo)授權(quán)票(價(jià)格由領(lǐng)導(dǎo)決定)和招待票(用于招待某些人或軍人、殘疾人等)等特殊票種;出納端是用于當(dāng)每日結(jié)束時(shí),各個(gè)售票窗口的售票員將當(dāng)日所賣的錢交到出納端,出納端可以查詢單個(gè)售票員的售票數(shù)和應(yīng)交的金額數(shù),確認(rèn)收款后,打印收款單據(jù);管理端的權(quán)限最大,可以用來設(shè)定票價(jià),增加票種,分配領(lǐng)導(dǎo)授權(quán)票和領(lǐng)導(dǎo)票,打印日統(tǒng)計(jì)、月統(tǒng)計(jì)、年統(tǒng)計(jì)的報(bào)表。下面分別給予介紹 1. 售普通票端 普通票的種類可以由管理端來添加和刪除,程序啟動(dòng)時(shí),首先顯示登錄界面,通過建立一個(gè)ADO對(duì)象連接到服務(wù)器上,從服務(wù)器傳遞過來普通售票員的記錄,添加到ComboBox控件中,為了加快速度,一次將所有普通售票員的編號(hào)、姓名和密碼全部讀取到客戶機(jī)上,講這些信息保存到臨時(shí)數(shù)組中,當(dāng)選擇不同的售票員時(shí),從數(shù)組中提取出相應(yīng)的密碼,這樣就不用每一次都從服務(wù)器端傳遞數(shù)據(jù),有利于節(jié)省時(shí)間和提高運(yùn)行速度。 進(jìn)入主售票界面后,首先在Form_Load事件中選擇所有的普通票票種,跟登錄界面一樣,一次性將所有的普通票的票種、票價(jià)、票的屬性及類型都保存到臨時(shí)數(shù)組中。選擇不同的票種,從相應(yīng)的數(shù)組中提取出相應(yīng)的票價(jià)和票的屬性,顯示到右邊的界面上。這時(shí)執(zhí)行寫卡指令,讓寫卡器處于寫卡狀態(tài),然后售票員就可以開始刷卡售票了,刷完后,自動(dòng)顯示已經(jīng)刷了幾張卡、應(yīng)付金額數(shù);輸入收款金額后,自動(dòng)顯示應(yīng)找回的金額數(shù),最后確認(rèn)賣票,完成一次售票工作。當(dāng)售票員完成一日的售票工作后,可以進(jìn)行當(dāng)日售票的查詢,查詢方式根據(jù)客戶的需求,我們?cè)O(shè)置了位置查詢和票種查詢兩種查詢方式。其中,因?yàn)槭燮眴T的售票位置是不確定的,因此位置查詢用于查詢售票員在某個(gè)地方的售票數(shù);而票種查詢則是根據(jù)不同的票種來查詢售票員的售票情況。同時(shí),我們使用HTMLHELP制作了CHM幫助文件,當(dāng)售票員有什么地方不會(huì)使用時(shí),可以隨時(shí)使用幫助。 2. 出納端 出納端的目的是用來收取售票員的交款。首先也需要輸入正確的密碼才能成功登錄,只是這次從服務(wù)器端返回的是出納員的記錄,登錄后,出納員可以選擇兩種方式來查詢:查詢售票員的售票情況和查詢售票員的交款情況。第一種是用來當(dāng)售票員來交款時(shí),出納員需要查詢?cè)撌燮眴T需要交多少錢,總共賣了多少票,輸入該售票員的交款數(shù)額后,確認(rèn)并打印收款憑證。第二種情況適當(dāng)所有的售票員(或其中一部分)交款完畢后,打印出所有售票員的交款情況。 3. 管理端 管理端的情況就比較復(fù)雜了,管理端不僅可以設(shè)置票價(jià)、添加票種、增刪售票員之外,還可以查詢當(dāng)日、當(dāng)月的售票記錄,并可以生成報(bào)表打印。在軟件制作的過程中,管理端花費(fèi)的時(shí)間也是最多的。 四、 編程過程中的問題及解決方法 1. 連接數(shù)據(jù)庫 在連接數(shù)據(jù)庫的各種方法中,使用ADO是最常見的一種,一般都使用ADO控件進(jìn)行數(shù)據(jù)庫的連接,但是使用控件需要花費(fèi)的資源比較多,因此,我們?cè)诔绦蛑卸疾捎么a的形式進(jìn)行連接數(shù)據(jù)庫。示例代碼如下: 2. 插入及查詢數(shù)據(jù) 向數(shù)據(jù)庫中插入數(shù)據(jù),有下列幾種方法: ① 使用結(jié)構(gòu)化查詢語句SQL ② 使用ADO對(duì)象的Addnew方法 第一種方法不僅能夠節(jié)省代碼的輸入量,而且能夠以最快的速度插入到數(shù)據(jù)庫中;第二種方法使用起來比較方便,而且在調(diào)試時(shí)可以很方便地查找出插入錯(cuò)誤的代碼位置。因此,我們建議在調(diào)試時(shí)使用第二種方法,最后在生成可執(zhí)行程序時(shí)再改為第一種方法。 示例如下: 3. 報(bào)表 制作報(bào)表有兩種方式,一種是使用Visual Basic自帶的Data Enviroment(即數(shù)據(jù)環(huán)境),另一種是Crystal Report(即水晶報(bào)表)。數(shù)據(jù)環(huán)境使用比較簡(jiǎn)單,但是功能有限,只能夠簡(jiǎn)單地將數(shù)據(jù)庫中的數(shù)據(jù)篩選出來,數(shù)據(jù)環(huán)境集成于Visual Basic中,不再需要額外安裝;水晶報(bào)表是一種功能強(qiáng)大的制作報(bào)表的軟件,需要額外安裝,一般在Visual Basic安裝盤的Tool目錄下都有,使用水晶報(bào)表不僅可以做簡(jiǎn)單的數(shù)據(jù)瀏覽的報(bào)表,而且可以做交叉表、統(tǒng)計(jì)表和圖表等。最重要的是,水晶報(bào)表在Visual Basic.NET(通常說的Visual Basic7.0)中已經(jīng)成為默認(rèn)的制作報(bào)表的工具。 4. 制作幫助文件 幫助文件有兩種格式:.hlp文件和.chm文件。在現(xiàn)在的大部分軟件的幫助文件都是.chm文件,.hlp文件在Win95/98系統(tǒng)中多見。一般來說,.hlp文件需要先在Word或?qū)懽职逯芯庉嫼茫ㄐ枰O(shè)定特定的格式)保存為.rtf格式,然后在Html Help WorkShop中進(jìn)行編譯生成,最后在Visual Basic中調(diào)用,調(diào)用方法也比較簡(jiǎn)單,設(shè)定CommonDialog控件的HelpFile屬性就可以了。而.chm文件需要首先使用FrontPage等網(wǎng)頁編輯軟件首先編輯好.htm文件,最后在Html Help WorkShop編譯生成,也可以在Html Help WorkShop中編輯.htm文件。 五、 結(jié)束語 本軟件采用了磁卡作為門票,并對(duì)每張門票進(jìn)行加密處理,由驗(yàn)票系統(tǒng)自動(dòng)對(duì)門票進(jìn)行識(shí)別,從而杜絕了假票和人為因素,減少了不必要的損失。并且本系統(tǒng)采用計(jì)算機(jī)控制和管理極大地提高了工作效率和管理水平。能夠?qū)崟r(shí)、準(zhǔn)確地查詢和統(tǒng)計(jì)門票發(fā)行的數(shù)量、銷售額、類別、時(shí)間及流量,并可打印日、周、月、季、年報(bào)表,便于審核即科學(xué)化決策。 六、 感謝 在軟件的編寫過程中,得到了機(jī)械科學(xué)研究院的查振元高級(jí)工程師的幫助,在此表示感謝! [參考文獻(xiàn)] [1] E.Winemiller,J.Roff著 ,Visual Basic6.0數(shù)據(jù)庫開發(fā),清華大學(xué)出版社,1999年 [2] Visual Basic開發(fā)手冊(cè),機(jī)械工業(yè)出版社 [3] Visual Basic6.0編程與實(shí)例解析,科學(xué)出版社 [4]常斗南著,可編程序控制器原理•應(yīng)用•實(shí)驗(yàn),機(jī)械工業(yè)出版社,1998年
提交
查看更多評(píng)論
其他資訊
超越傳統(tǒng)直覺,MATLAB/Simulink助力重型機(jī)械的智能化轉(zhuǎn)型
新大陸自動(dòng)識(shí)別精彩亮相2024華南國(guó)際工業(yè)博覽會(huì)
派拓網(wǎng)絡(luò)被Forrester評(píng)為XDR領(lǐng)域領(lǐng)導(dǎo)者
智能工控,存儲(chǔ)強(qiáng)基 | ??低晭砭手黝}演講
展會(huì)|Lubeworks路博流體供料系統(tǒng)精彩亮相AMTS展會(huì)